package com.googlecode.allinclusive.fw.web.zk.taglib;

import java.util.ArrayList;
import java.util.List;

import com.googlecode.allinclusive.fw.dict.DefaultDictManager;
import com.googlecode.allinclusive.fw.dict.DictManager;
import com.googlecode.allinclusive.fw.dict.DictValue;
import com.googlecode.allinclusive.fw.springframework.utils.SpringUtils;

public class DictTag {

	public static final String EMPTY_VALUE = "";
	public static final String EMPTY_LABEL = "--- 请选择 ---";
	
	/**
	 * 生成指定类型代码的数据字典下拉框列表信息
	 * @param dictTypeCode 类型代码
	 * @return 下拉框内容
	 */
	public static List<DictValue> getDictValueList(String dictTypeCode) {
		return getDictValueList(dictTypeCode, true, EMPTY_VALUE, EMPTY_LABEL);
	}

	/**
	 * 生成指定类型代码的数据字典下拉框列表信息
	 * @param dictTypeCode 类型代码
	 * @param empty 是否添加空选择项
	 * @return 下拉框内容
	 */
	public static List<DictValue> getDictValueList(String dictTypeCode, boolean empty) {
		return getDictValueList(dictTypeCode, empty, EMPTY_VALUE, EMPTY_LABEL);
	}

	/**
	 * 生成指定类型代码的数据字典下拉框列表信息
	 * @param dictTypeCode 类型代码
	 * @param empty 是否添加空选择项
	 * @param emptyValue 空选择项的代码值
	 * @param emptyLabel 空选择项的代码名
	 * @return 下拉框内容
	 */
	public static List<DictValue> getDictValueList(String dictTypeCode, boolean empty, String emptyValue, String emptyLabel) {
		DictManager dictMgr = SpringUtils.getBean(DefaultDictManager.class);
        // 指定的类型代码的数据字典信息
        List<DictValue> dictValueList = dictMgr.getDictValueList(dictTypeCode);
        List<DictValue> options = new ArrayList<DictValue>();
        // 添加‘请选择’
        if (empty) {
        	options.add(0, new DictValue(dictTypeCode, emptyValue, emptyLabel));
        }
        options.addAll(dictValueList);
        
        return options;
	}
}
